package com.xyy.saas.payment.service;

import com.xyy.saas.payment.cores.enums.FBankPowerIdEnum;
import com.xyy.saas.payment.exception.PaymentException;
import com.xyy.saas.payment.manage.cores.vo.ResultVO;
import com.xyy.saas.payment.manage.cores.vo.UserSettleInfoVO;
import com.xyy.saas.payment.pojo.vo.*;

import java.util.List;

public interface OpenAccountService {

    /**
     * 富民开通支付功能
     * @param accountId
     * @return
     */
    boolean openPay(String accountId, List<FBankPowerIdEnum> fBankPowerList) throws Exception;

    /**
     * 微信开户意愿申请单
     * @param accountId 支付平台分配用户id
     * @param thirdUserId 三方用户id
     * @return
     */
    ResultVO openAccountApplyment(String accountId, String thirdUserId);

    /**
     * 微信开户意愿申请单撤销后重新申请
     * @return
     */
    ResultVO againOpenAccountApplyment(String applyCode);

    /**
     * 开户状态统计
     */
    ResultVO<OpenAccountStatusSummaryVO> excelOpenAccount();

    /**
     * 开户状态查询
     */
    OpenAccountStepStatusVO queryOpenAccountStep(OpenAccountStatusQueryParam param) throws PaymentException;

    /**
     * 开户信息查询
     */
    OpenAccountInfoVO queryOpenAccountInfo(OpenAccountInfoQueryParam param) throws PaymentException;

    /**
     * 更新用户信息
     */
    ResultVO updateUserInfo(UserInfoUpdateVO param);

    UserSettleInfoVO queryUserSettleInfo(String businessIdType, String businessUserId);

}
